Skip to content

Run page: channel and replicate IDs, no-problems icon, plan card, mask kinds - #241

Merged
guijacquemet merged 2 commits into
mainfrom
claude/run-page-labels
Nov 9, 2026
Merged

guijacquemet merged 2 commits into
mainfrom
claude/run-page-labels

Conversation

@guijacquemet

@guijacquemet guijacquemet commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Summary

The Step 3 run-page label fixes the owner approved on 2026-11-09 (UX proposal Q4: a separate small PR, before the rearrangement). Notebook only; no change to the run, the table or any file written.

  • run_labels.py (new): RunLabels, built from the published morphobricks.toml through description_from_bytes. recorded_labels(output) uses the file only when its SHA-256 equals the one the run's manifest recorded in experiment_description.
  • notebook_plots.py / notebook_run.py:
    1. Plot tabs, plot titles and the findings table name channels by ID (DNA/ACTIN/PHASE) in a described run. A channel position whose units do not all declare the same ID keeps C<n>. Undescribed runs keep C0/C1/C2. The tabs are 96 px wide so PHASE is not cut off.
    2. The box-plot axis and the curve legends use the replicate ID (drug / rep2, legend rep2) instead of the folder name (drug / day2). The condition stays the folder label, as the description's condition IDs are not part of this fix.
    3. The run tile shows a tick for "no problems found" and keeps the warning sign when there are issues.
    4. "What will happen" is hidden after a successful run (it described that run) and returns when a setting changes. It stays after a run that wrote nothing.
  • mask_text.py, mask_answers.py, notebook_mask_step.py, notebook_masks_screen.py: Describe the masks has one Mask column (the ID, with the folder name in brackets only when it differs), and a Declared kind column (objects/regions, the user's answer) beside Kind (suggested). A type with no answer says "not described yet".
  • pyproject.toml declares the new module's layer (io); AGENTS.md repo map and CHANGELOG.md updated.

Decisions

  • Only data the run already records is used: IDs come from the published description, checked against the manifest's recorded SHA-256. Nothing is guessed: no description, an edited file or disagreeing units give the table's own names.

Notes for review

  • Not changed (follow-ups): the "Image or biological repeat" column of the findings table, step 4's plots, and the relationship tables of the mask step still show folder/type names.
  • The box-plot label keeps the condition (drug / rep2) because a replicate ID alone repeats across conditions.
  • Looked at in headless Chromium (deviceScaleFactor 2) with tests/channel_images.py images and standalone embed_minimal_html, which lacks JupyterLab styles and icons; not looked at in a real JupyterLab.

Tests

  • tests/test_run_page_labels.py (new, 13 tests): channel tabs/titles, undescribed run, edited description, disagreeing units, replicate IDs, folder names kept, icons, plan card hidden/shown, declared kind, single Mask column, undescribed mask and differing ID. 9 of the new or changed tests fail on main; the rest guard the unchanged behaviour. tests/test_notebook_mask_step.py updated for the new columns.
  • python tools/check.py with .[dev,notebook,zarr]: ruff check and format clean, code rules pass (shrink-only baseline untouched), 4843 passed, 4 skipped (file-mode and case-sensitivity tests that skip on this file system).

🤖 Generated with Claude Code

https://claude.ai/code/session_01G3qp9AxjpGPw9xfWAUJNqc

…k kinds

Step 3 of the notebook, for a described run: plot tabs, titles and findings use
channel IDs, plots and legends use replicate IDs (only from the published
description the manifest recorded), "no problems found" gets a tick, "What will
happen" is hidden after a run until a setting changes, and Describe the masks
shows the declared kind beside the suggestion in one Mask column.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G3qp9AxjpGPw9xfWAUJNqc
@guijacquemet
guijacquemet marked this pull request as ready for review November 9, 2026 06:58
@guijacquemet
guijacquemet merged commit 53aa11c into main Nov 9, 2026
7 checks passed
@guijacquemet
guijacquemet deleted the claude/run-page-labels branch November 9, 2026 07:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants